diff --git a/board/trab/Makefile b/board/trab/Makefile
new file mode 100644
index 0000000..bb6930d
--- /dev/null
+++ b/board/trab/Makefile
@@ -0,0 +1,47 @@
+#
+# (C) Copyright 2000-2002
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB	= lib$(BOARD).a
+
+OBJS	:= trab.o flash.o vfd.o
+SOBJS	:= memsetup.o
+
+$(LIB):	$(OBJS) $(SOBJS)
+	$(AR) crv $@ $^
+
+clean:
+	rm -f $(SOBJS) $(OBJS)
+
+distclean:	clean
+	rm -f $(LIB) core *.bak .depend
+
+#########################################################################
+
+.depend:	Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
+		$(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
+
+-include .depend
+
+#########################################################################
diff --git a/common/Makefile b/common/Makefile
new file mode 100644
index 0000000..f2c90c7
--- /dev/null
+++ b/common/Makefile
@@ -0,0 +1,69 @@
+#
+# (C) Copyright 2000, 2001
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB	= libcommon.a
+
+AOBJS	=
+
+COBJS	= main.o altera.o bedbug.o \
+	  cmd_autoscript.o cmd_bedbug.o cmd_boot.o \
+	  cmd_bootm.o cmd_cache.o cmd_console.o cmd_date.o \
+	  cmd_dcr.o cmd_diag.o cmd_doc.o cmd_dtt.o \
+	  cmd_eeprom.o cmd_elf.o cmd_fdc.o cmd_flash.o \
+	  cmd_fpga.o cmd_i2c.o cmd_ide.o cmd_immap.o \
+	  cmd_jffs2.o cmd_mem.o cmd_mii.o cmd_misc.o \
+	  cmd_net.o cmd_nvedit.o env_common.o \
+	  env_flash.o env_eeprom.o env_nvram.o env_nowhere.o \
+	  cmd_pci.o cmd_pcmcia.o \
+	  cmd_reginfo.o cmd_scsi.o cmd_vfd.o cmd_usb.o \
+	  command.o console.o devices.o dlmalloc.o \
+	  docecc.o environment.o flash.o fpga.o \
+	  hush.o kgdb.o lists.o miiphybb.o miiphyutil.o \
+	  s_record.o soft_i2c.o soft_spi.o cmd_spi.o spartan2.o \
+	  usb.o usb_kbd.o usb_storage.o \
+	  virtex2.o xilinx.o
+
+OBJS	= $(AOBJS) $(COBJS)
+
+CPPFLAGS += -I..
+
+all:	$(LIB) $(AOBJS)
+
+$(LIB):	.depend $(OBJS)
+	$(AR) crv $@ $(OBJS)
+
+environment.o: environment.c ../tools/envcrc
+	$(CC) $(AFLAGS) -Wa,--no-warn \
+		-DENV_CRC=$(shell ../tools/envcrc) \
+		-c -o $@ environment.c
+
+#########################################################################
+
+.depend:	Makefile $(AOBJS:.o=.S) $(COBJS:.o=.c)
+		$(CC) -M $(CFLAGS) $(AOBJS:.o=.S) $(COBJS:.o=.c) > $@
+
+sinclude .depend
+
+#########################################################################
diff --git a/include/devices.h b/include/devices.h
new file mode 100644
index 0000000..b1e1ebd
--- /dev/null
+++ b/include/devices.h
@@ -0,0 +1,109 @@
+/*
+ * (C) Copyright 2000
+ * Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <lists.h>
+
+#ifndef _DEVICES_H_
+#define _DEVICES_H_
+
+/*
+ * CONSOLE DEVICES
+ */
+
+#define DEV_FLAGS_INPUT	 0x00000001	/* Device can be used as input	console */
+#define DEV_FLAGS_OUTPUT 0x00000002	/* Device can be used as output console */
+#define DEV_FLAGS_SYSTEM 0x80000000	/* Device is a system device		*/
+#define DEV_EXT_VIDEO	 0x00000001	/* Video extensions supported		*/
+
+/* Device informations */
+typedef struct {
+	int	flags;			/* Device flags: input/output/system	*/
+	int	ext;			/* Supported extensions			*/
+	char	name[8];		/* Device name				*/
+
+/* GENERAL functions */
+
+	int (*start) (void);		/* To start the device			*/
+	int (*stop) (void);		/* To stop the device			*/
+
+/* OUTPUT functions */
+
+	void (*putc) (const char c);	/* To put a char			*/
+	void (*puts) (const char *s);	/* To put a string (accelerator)	*/
+
+/* INPUT functions */
+
+	int (*tstc) (void);		/* To test if a char is ready...	*/
+	int (*getc) (void);		/* To get that char			*/
+
+/* Other functions */
+
+	void *priv;			/* Private extensions			*/
+} device_t;
+
+/*
+ * VIDEO EXTENSIONS
+ */
+#define VIDEO_FORMAT_RGB_INDEXED	0x0000
+#define VIDEO_FORMAT_RGB_DIRECTCOLOR	0x0001
+#define VIDEO_FORMAT_YUYV_4_4_4		0x0010
+#define VIDEO_FORMAT_YUYV_4_2_2		0x0011
+
+typedef struct {
+	void *address;			/* Address of framebuffer		*/
+	ushort	width;			/* Horizontal resolution		*/
+	ushort	height;			/* Vertical resolution			*/
+	uchar	format;			/* Format				*/
+	uchar	colors;			/* Colors number or color depth		*/
+	void (*setcolreg) (int, int, int, int);
+	void (*getcolreg) (int, void *);
+} video_ext_t;
+
+/*
+ * VARIABLES
+ */
+extern list_t devlist;
+extern device_t *stdio_devices[];
+extern char *stdio_names[MAX_FILES];
+
+/*
+ * PROTOTYPES
+ */
+int	device_register (device_t * dev);
+int	devices_init (void);
+int	devices_done (void);
+int	device_deregister(char *devname);
+#ifdef CONFIG_LCD
+int	drv_lcd_init (void);
+#endif
+#ifdef CONFIG_VFD
+int	drv_vfd_init (void);
+#endif
+#ifdef CONFIG_VIDEO
+int	drv_video_init (void);
+#endif
+#ifdef CONFIG_WL_4PPM_KEYBOARD
+int	drv_wlkbd_init (void);
+#endif
+
+#endif	/* _DEVICES_H_ */
